Market requirements, environmental needs, business costs, and limited battery life dictate that computers use as little energy as possible while still providing robust computing services. The energy consumed by a computer can be more efficiently managed by providing enough computational power for each service as needed instead of providing maximum computational power at all times. Computers such as a laptops, desktops, and mainframe computers, personal digital assistants (PDAs), cellular telephones, etc., provide services by causing program instructions to be executed by electronic circuitry. In this regard, various devices in a computer maintain electronic circuitry that consumes power so that services may be provided.
Most computers execute a computer program commonly referred to as an operating system that guides the operation of a computer and provides services to other programs. More specifically, an operating system controls the allocation and usage of hardware resources such as memory, mass memory storage, peripheral devices, etc. The computer instructions for initializing and operating the computing device are typically contained in a component of the operating system often referred to as the “kernel.” Shortly after a computer is started, the kernel begins executing. Since a kernel has direct control of the hardware and access to data that describes the state of a computer, a kernel may be used to regulate computing power and otherwise control energy consumption.
Traditionally, the power management features provided by an operating system consists of quantifying the amount of processing being performed and transitioning between different system states (sometimes referred to as “S-states”) based on the busyness/idleness of a computer. For example, some computers and their operating systems adhere to a standard commonly known as Advanced Configuration and Power Interface (“ACPI”) that supports different system states including a active state (e.g., S0) and various system sleep states (e.g., S1-S4). Moreover, when a computer transitions between system states, power consuming devices on the computer may transition to an appropriate device state (sometimes referred to as “D-states”) that includes a active state (e.g., D0) and various device sleep states (e.g., D1-D3). In this regard, the operating system may be responsible for maintaining state-to-device mappings so that individual devices may transition into an appropriate device state.
On one hand, each successively deeper system and associated device sleep states offer greater levels of power savings over the active state. On the other hand, higher system and device sleep states are each associated with reduced hardware availability. For example, a time period or latency overhead may be required to transition from a sleep state to the active state. In any event, with these types of existing systems, power management decisions do not account for the amount of remaining available power. As a result, the time period in which a user may perform meaningful tasks on a computer is short as power savings capabilities of certain hardware devices are not fully realized even when the amount of remaining power is very low.